﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; using Montana.Entidades;

namespace Montana
{
    public partial class frmCancelarDocumento : Form
    {
        public int IDCliente { get; set; }

        public frmCancelarDocumento()
        {
            InitializeComponent();
        }

        private void frmCancelarDocumento_Load(object sender, EventArgs e)
        {
            ArmarColumnasFacturas();

            CargarCuentaCorriente();
        }

        private void ArmarColumnasFacturas()
        {
            lswDocumento.Columns.Add("Fecha", 80);
            lswDocumento.Columns.Add("Documento", 120);
            lswDocumento.Columns.Add("Debe", 80, HorizontalAlignment.Right);
            lswDocumento.Columns.Add("Haber", 80, HorizontalAlignment.Right);
            lswDocumento.Columns.Add("Debe (Kg.)", 80, HorizontalAlignment.Right);
            lswDocumento.Columns.Add("Haber (Kg.)", 80, HorizontalAlignment.Right);

            lswCancelar.Columns.Add("Fecha", 80);
            lswCancelar.Columns.Add("Documento", 110);
            lswCancelar.Columns.Add("Importe", 75, HorizontalAlignment.Right);
            lswCancelar.Columns.Add("Cancelado", 75, HorizontalAlignment.Right);
            lswCancelar.Columns.Add("Saldo", 75, HorizontalAlignment.Right);
            lswCancelar.Columns.Add("Cancela", 75, HorizontalAlignment.Right);
        }

        private void CargarCuentaCorriente()
        {
            this.Cursor = Cursors.WaitCursor;

            Factura fac = new Factura();
            Cliente cli = new Cliente();

            List<Factura> facturas = fac.BuscarPendientesBlanco(IDCliente);

            decimal saldo = cli.ObtenerSaldo(IDCliente);

            txtSaldoDisponible.Text = saldo.ToString("0.00");
            
            lswDocumento.Items.Clear();
            foreach (Factura f in facturas)
            {
                lswDocumento.Items.Add(f.Fecha.ToString("dd/MM/yyyy"));
                lswDocumento.Items[lswDocumento.Items.Count - 1].SubItems.Add("FC " + f.Letra + " " + f.Nombre);
                lswDocumento.Items[lswDocumento.Items.Count - 1].Tag = f;

                decimal importeTotal = f.Importetotal - (f.Importetotal * f.Porcentajebonificacion / 100);
                importeTotal += f.Importeiva;
                lswDocumento.Items[lswDocumento.Items.Count - 1].SubItems.Add(importeTotal.ToString("0.00"));

                lswDocumento.Items[lswDocumento.Items.Count - 1].SubItems.Add(f.Importecancelado.ToString("0.00"));

                lswDocumento.Items[lswDocumento.Items.Count - 1].SubItems.Add(f.Totalresagosproductos.ToString("0.000"));
                lswDocumento.Items[lswDocumento.Items.Count - 1].SubItems.Add(f.Totalresagosentregados.ToString("0.000"));

                //saldoAcumulado += importeTotal - f.Importecancelado;
                //saldoAcumuladoKG += f.Totalresagosproductos - f.Totalresagosentregados;
            }

            //txtSaldoNuevo.Text = saldoAcumulado.ToString("0.00");
            
            this.Cursor = Cursors.Default;
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (lswDocumento.SelectedItems.Count == 0)
                return;

            Factura f = (Factura)lswDocumento.SelectedItems[0].Tag;
            decimal importeDocumento = decimal.Parse(lswDocumento.SelectedItems[0].SubItems[4].Text);
            decimal saldo = Validacion.ValDecimal(txtSaldoDisponible);
            string maximo = saldo.ToString("0.00");

            if (importeDocumento < saldo)
                maximo = importeDocumento.ToString("0.00");

            frmInputBox frm = new frmInputBox("Importe a Cancelar", "El Importe Máximo a Cancelar es $" + maximo);

            if (frm.ShowDialog() == DialogResult.Cancel)
                return;

            decimal cancela = decimal.Parse(frm.Valor);

            ListViewItem item = lswCancelar.Items.Add(f.Fecha.ToShortDateString());
            item.Tag = f;

            item.SubItems.Add(f.Tipo + " " + f.Letra + " " + f.Nombre);
            item.SubItems.Add(f.Importetotal.ToString("0.00"));
            item.SubItems.Add(f.Importecancelado.ToString("0.00"));
            item.SubItems.Add(saldo.ToString("0.00"));
            item.SubItems.Add(cancela.ToString("0.00"));
        }
    }
}
